package com.xiao.spring_Proxydemo1;


import org.junit.Test;

import spring_Proxydemo1.Proxydemo2.ProxyDynamicFactory;
import spring_Proxydemo1.Proxydemo2.goal;
import spring_Proxydemo1.Proxydemo2.goalImpl;

public class ProxyDynamic {

    @Test
    public void test(){
        //创建一个动态代理Factory工厂,并把目标对象的实体类放到动态代理Factory中
        ProxyDynamicFactory proxyDynamicFactory = new ProxyDynamicFactory(new goalImpl());
        //通过接口来向下转型获取代理对象，因为代理对象和目标对象实现的接口是一样的
       goal proxy = (goal) proxyDynamicFactory.getProxy();
        //goalImpl proxy = (goalImpl) proxyDynamicFactory.getProxy();
      /*  目标方法前，hello
                保存成功
        目标方法后，hello*/
        //如果在动态代理中获取的Proxy对象的返回类型是目标实体类，那么获取的到就是静态代理的Proxy对象
        //代理对象调用方法
        proxy.save();
        System.out.println("==========");
        proxy.delete();
    }
}
